<?php
$longeurmax=267;

function second2string($time) {
	$d = floor($time/86400);
	$d_str = ($d > 0 ? $d.'j ' : '');

	$h = floor(($time-$d*86400)/3600);
	$h_str = ($h > 0 ? $h.'h ' : '');

	$m = floor(($time-($d*86400+$h*3600))/60);
	$m_str = ($m > 0 ? $m.'m ' : '');

	$s = floor($time-($d*86400+$h*3600+$m*60));
	$s_str = ($s > 0 ? $s.'s ' : '');

	$time_str = $d_str . $h_str . $m_str . $s_str;

	return $time_str;
}


if(isset($_GET['personnage']) AND !empty($_GET['personnage']) AND ctype_alnum($_GET['personnage']))
{
	$nom = htmlspecialchars(strtolower($_GET['personnage']));
	$page = 'http://census.soe.com/get/ps2:v2/character/?name.first_lower='.$nom.'&c:resolve=online_status,outfit,faction,world&c:lang=fr';
	$census = file_get_contents($page);
	$parsed_json = json_decode($census);
	
	$page_serveur = 'http://census.soe.com/json/get/ps2/world/?world_id='.$parsed_json->{'character_list'}[0]->{'world_id'};
	$census_serveur = file_get_contents($page_serveur);
	$parsed_json_serveur = json_decode($census_serveur);

	if($parsed_json->{'returned'} != 0){
		$faction = imagecreatefrompng('http://census.soe.com/'.$parsed_json->{'character_list'}[0]->{'faction'}->{'image_path'}); // On charge les logo
		
		
		if($parsed_json->{'character_list'}[0]->{'outfit'}->{'name'}){
			$team = '['.$parsed_json->{'character_list'}[0]->{'outfit'}->{'alias'}.'] '.$parsed_json->{'character_list'}[0]->{'outfit'}->{'name'};
			$copy = '';
		}
		else{
			$team = '';
			$copy = 'By Team FRLB';
		}
		
		
		if($parsed_json->{'character_list'}[0]->{'outfit'}->{'alias_lower'} == 'frlb'){
			$image_avatar = 'wolf_decal.png';
		}
		elseif($parsed_json->{'character_list'}[0]->{'outfit'}->{'alias_lower'} == 'frtb'){
			$image_avatar = 'wolf_decal.png';
		}
		else{
			$image_avatar = 'no_avatar.png';
		}
		
		if ($parsed_json->{'character_list'}[0]->{'online_status'} == 0) {
			$statut = 'Hors ligne';
		}						
		else {
			$statut = 'En ligne';
		}
		$nom = $parsed_json->{'character_list'}[0]->{'name'}->{'first'};
		$level = 'Niveau '. $parsed_json->{'character_list'}[0]->{'battle_rank'}->{'value'};
		$serveur = $parsed_json_serveur->{'world_list'}[0]->{'name'}->{'fr'};
		$tps_de_jeu = second2string($parsed_json->{'character_list'}[0]->{'times'}->{'minutes_played'} * 60 ).' de jeu';
		$percent_level =  $parsed_json->{'character_list'}[0]->{'battle_rank'}->{'percent_to_next'}; // % du niveau suivant
		$leecher = '';
	}
	else{
		$leecher = 'Team FRLB';
		$copy = 'Team FRLB';
		$team = '';
		$image_avatar = 'no_avatar.png';
		$statut = '';
		$nom = '';
		$faction = '';
		$level = '';
		$tps_de_jeu = '';
		$serveur = '';
		$percent_level = 0 ; //pas d'expérience.
	}
	
}
else{
	$leecher = 'Team FRLB';
	$copy = 'By Team FRLB';
	$team = '';
	$image_avatar = 'no_avatar.png';
	$statut = '';
	$nom = '';
	$faction = '';
	$level = '';
	$tps_de_jeu = '';
	$serveur = '';
	$percent_level = 0 ; //pas d'expérience.
}


// Teste le type de l'avatar et le charge
list($largeur_orig,$hauteur_orig, $type) = getimagesize('./theme/avatar/'.$image_avatar);
switch ($type) { 
	case IMAGETYPE_JPEG:
		$avatar = imagecreatefromjpeg('./theme/avatar/'.$image_avatar);
	break;
	case IMAGETYPE_GIF:
		$avatar = imagecreatefromgif('./theme/avatar/'.$image_avatar);
	break;
	case IMAGETYPE_PNG:
		$avatar = imagecreatefrompng('./theme/avatar/'.$image_avatar);
	break;

	default:
		$avatar = imagecreatefrompng('./theme/avatar/no_avatar.png');
}

$image = imagecreatetruecolor(450,150);// Création du fond base
$fond_avatar = imagecreatetruecolor(50,65);// Création de l'image sous l'avatar (si transparent)
$fond = imagecreatefrompng('./theme/avatar/signature.png'); // On charge notre fond (cadre)
$blanc = imagecolorallocate($image, 255, 255, 255); // couleur blanche
$bleu = imagecolorallocate($image, 30, 144, 255); // couleur bleu

putenv('GDFONTPATH=' . realpath('.'));

$police1 = './theme/Coalition.ttf';
$police2 = './theme/Inky_Cre.ttf';
$police3 = './theme/Coalition.ttf';

imagefill($image , 0, 0, imagecolorallocatealpha($image, 255, 128, 0, 127)); //on remplit le fond avec du orobote transparent

imageAlphaBlending($image, true); //on dit que le fond contient de la transparence
imageSaveAlpha($image, true);

imageAlphaBlending($fond, true); //on dit que le sous-fond contient de la transparence
imageSaveAlpha($fond, true);

imageAlphaBlending($faction, true); //de même pour le logo.
imageSaveAlpha($faction, true);


// Cacul des nouvelles dimensions
$largeur = 60;//Définition de la largeur maximale de l'avatar
$hauteur = 60;//Définition de la hauteur maximale de l'avatar
$tps_de_jeu_orig = $largeur_orig / $hauteur_orig ;

if ($largeur/$hauteur > $tps_de_jeu_orig) {
   $largeur = ceil($hauteur*$tps_de_jeu_orig);
}
else {
   $hauteur = ceil($largeur/$tps_de_jeu_orig);
}

// aligne l'avatar par rapport au centre du cadre avec x:54 / y:60 milleu du cadre rond
$alignx = ceil(54 - ($largeur/2));
$aligny = ceil(60 -($hauteur/2));

imagecopyresampled($image, $fond_avatar, 25, 30, 0, 0, 60, 60, 0, 0); //on ajoute le fons de l'avatar
imagecopyresampled($image, $avatar, $alignx, $aligny, 0, 0, $largeur, $hauteur, $largeur_orig, $hauteur_orig);//on ajoute l'avatar
imagecopyresampled($image, $fond, 0, 0, 0, 0, 450, 150, imagesx($fond), imagesy($fond)); //on met le cadre 
imagecopyresampled($image, $faction, 390, 65, 0, 0, 25, 25, imagesx($faction), imagesy($faction)); //on ajoute le logo

//Dessinage de la barre:
for($i=0;$i<$longeurmax*$percent_level/100;$i++){//tant qu'on a pas entièrement déssiné la barre. (longueur max ici $longeurmax)
	//on met les coordonnés décalées de 10 par rapport au bord
	//et on dessine plusieurs lignes.
	//Pour le reste c'est juste pour faire le dégradé rouge/vert
	// imagesetpixel  ( resource image , Coordonnée X  , Coordonnée Y  , Couleur  )
	imagesetpixel($image,95+$i,120,imagecolorallocate($image, 230-($i*230/$longeurmax),($i*155/$longeurmax),0));
	imagesetpixel($image,95+$i,121,imagecolorallocate($image, 230-($i*230/$longeurmax),($i*155/$longeurmax),0));
	imagesetpixel($image,95+$i,122,imagecolorallocate($image, 230-($i*230/$longeurmax),($i*155/$longeurmax),0));
	imagesetpixel($image,95+$i,123,imagecolorallocate($image, 230-($i*230/$longeurmax),($i*155/$longeurmax),0));
	imagesetpixel($image,95+$i,124,imagecolorallocate($image, 230-($i*230/$longeurmax),($i*155/$longeurmax),0));
}

imagettftext($image, 13, 0, 134, 26, imagecolorallocate($image, 20, 100, 205), $police1, $team); // le nom de la team (ombre)
imagettftext($image, 13, 0, 135, 25, imagecolorallocate($image, 170, 180, 150), $police1, $team); // le nom de la team
imagettftext($image, 50, 350, 60, 80, $blanc, $police2, $leecher);
imagettftext($image, 10, 0, 200, 69, $blanc, $police2, $nom);
imagettftext($image, 10, 0, 200, 83, $blanc, $police2, $tps_de_jeu);
imagettftext($image, 10, 0, 290, 98, $blanc, $police2, $serveur);
imagettftext($image, 10, 0, 200, 98, $blanc, $police2, $statut);
imagettftext($image, 8, 0, 200, 125, $blanc, $police2, $level); // le level
imagettftext($image, 6, 0, 350, 115, $bleu, $police3, $copy); // le copyright

header('Content-type: image/png'); // le header
imagepng($image); // on affiche l'image
imagedestroy($image); // on libère la mémoire.
?>